Skip to content

build: upgrade Electron and SQLite native runtime#448

Open
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade
Open

build: upgrade Electron and SQLite native runtime#448
AmagiDDmxh wants to merge 1 commit into
paperboytm:mainfrom
AmagiDDmxh:feat/electron43-native-upgrade

Conversation

@AmagiDDmxh

@AmagiDDmxh AmagiDDmxh commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Why

The app was on Electron 34, outside Electron's latest-three-major support window, while the shared native database dependency remained on better-sqlite3 11. The two upgrades need to move together because Spool uses the same addon from Electron, Node-based tests, and the CLI.

better-sqlite3 12 drops EOL Node/Electron targets, supports Node 20-26, and contains the V8 compatibility needed by current Electron releases. This PR treats the change as one native-runtime migration rather than an automated dependency bump.

What changed

  • Upgrade Electron from 34.5.8 to 43.1.1.
  • Upgrade the single workspace better-sqlite3 version from 11.10.0 to 12.11.1 across app, core, and CLI.
  • Upgrade @electron/rebuild to 4.2.0, @electron/asar to 4.2.0, and electron-builder to 26.15.3.
  • Require Node >=22.12 for the development toolchain.
  • Declare Node 22 types directly in share-backend, which imports Node test APIs, instead of imposing a repository-wide type override.
  • Let @electron/rebuild resolve its compatible node-abi 4.33.0 through the lockfile; no transitive override is required for Electron 43 ABI 148.
  • Print Electron, bundled Node, V8, and module ABI before the native smoke loads the addon.

Verification

  • Frozen and regular pnpm install both passed without changing the lockfile.
  • All 13 workspace typecheck tasks passed.
  • Type-aware Oxlint passed.
  • Core: 417 passed, 1 skipped.
  • App: 450 passed in the full unit run used for the migration; the review rerun also passed 422 tests before two existing fixed-timeout build/load checks exceeded their local budgets under system load.
  • Share backend: 250 passed, including the deployment test that previously exposed mixed Node URL declarations.
  • Native smoke passed on Electron 43.1.1 / Node 24.18.0 / V8 15.0 / ABI 148, then restored and loaded the addon under local Node ABI 137.
  • The two security specs that hit teardown contention in the full local E2E run passed 3/3 with one Playwright worker, including app cleanup.
  • macOS arm64 packaging completed; deep strict codesign verification passed.
  • The packaged-app smoke passed indexing/search, packaged SQLite, Claude/Codex ACP assets, Security Scan, and purge.
  • The amended PR head passed Ubuntu unit, Ubuntu E2E, and macOS E2E.

Size and timing

  • App bundle: 643.9 MB, up from the Stacked features 6: package size #417 baseline of 601.7 MB (+42.2 MB).
  • Electron Framework: 273.9 MB, up from approximately 232 MB.
  • DMG and ZIP: approximately 224 MB each.
  • Local signed package run: approximately 11 minutes, mostly resource signing in the newer Electron Framework; release CI retains a 30-minute budget.

@AmagiDDmxh
AmagiDDmxh force-pushed the feat/electron43-native-upgrade branch from 1a81414 to 3c04582 Compare July 16, 2026 04:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant